home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 22 / PCPP #22.iso / Quake2 / q2source_12_11 / utils3 / common / mathlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-14  |  1.5 KB  |  56 lines

  1. #ifndef __MATHLIB__
  2. #define __MATHLIB__
  3.  
  4. // mathlib.h
  5.  
  6. #include <math.h>
  7.  
  8. #ifdef DOUBLEVEC_T
  9. typedef double vec_t;
  10. #else
  11. typedef float vec_t;
  12. #endif
  13. typedef vec_t vec3_t[3];
  14.  
  15. #define    SIDE_FRONT        0
  16. #define    SIDE_ON            2
  17. #define    SIDE_BACK        1
  18. #define    SIDE_CROSS        -2
  19.  
  20. #define    Q_PI    3.14159265358979323846
  21.  
  22. extern vec3_t vec3_origin;
  23.  
  24. #define    EQUAL_EPSILON    0.001
  25.  
  26. qboolean VectorCompare (vec3_t v1, vec3_t v2);
  27.  
  28. #define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
  29. #define VectorSubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];}
  30. #define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];}
  31. #define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];}
  32. #define VectorScale(a,b,c) {c[0]=b*a[0];c[1]=b*a[1];c[2]=b*a[2];}
  33. #define VectorClear(x) {x[0] = x[1] = x[2] = 0;}
  34. #define    VectorNegate(x) {x[0]=-x[0];x[1]=-x[1];x[2]=-x[2];}
  35.  
  36. vec_t Q_rint (vec_t in);
  37. vec_t _DotProduct (vec3_t v1, vec3_t v2);
  38. void _VectorSubtract (vec3_t va, vec3_t vb, vec3_t out);
  39. void _VectorAdd (vec3_t va, vec3_t vb, vec3_t out);
  40. void _VectorCopy (vec3_t in, vec3_t out);
  41. void _VectorScale (vec3_t v, vec_t scale, vec3_t out);
  42.  
  43. double VectorLength(vec3_t v);
  44.  
  45. void VectorMA (vec3_t va, double scale, vec3_t vb, vec3_t vc);
  46.  
  47. void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
  48. vec_t VectorNormalize (vec3_t in, vec3_t out);
  49. vec_t ColorNormalize (vec3_t in, vec3_t out);
  50. void VectorInverse (vec3_t v);
  51.  
  52. void ClearBounds (vec3_t mins, vec3_t maxs);
  53. void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);
  54.  
  55. #endif
  56.